Prometheus 從 Application 與 Exporter 收集各種 Metrics 後,面對上百種指標,我們應該特別關注哪些呢?參考別人分享的各種 Dashboard 當然是一個快速有效的方式,但是否有更核心的概念可以遵循?以下將介紹三種常見的 Monitoring Best Practices:
The USE Method,由 Brendan Gregg 發明,用於排除系統效能問題,可以快速判斷資源瓶頸或錯誤情況。USE 分別代表的是:
Utilization 使用率:資源在多少比率的時間中是忙碌的,例如 CPU 使用率、網路使用率、硬碟使用率等。
Saturation 飽和度:資源有多少工作在等待被完成,例如 CPU Run Queue、網路 Buffer、硬碟 I/O Queue 等。
Errors 錯誤情況:錯誤事件的數量,例如 HTTP 500、硬碟 I/O Error 等。
The USE Method 的設計理念是,在系統出現錯誤時,可以針對 CPU、記憶體、網路、硬碟等資源,依序檢查上述三項指標,找出問題所在。反過來說,可以隨時監控這三項指標,提早發現問題。
The Four Golden Signals 出自於 Google 的 Site Reliability Engineering,該書在 Google SRE 網站上可免費線上閱讀。這四個指標是在監控分散式系統時的重點:
Latency 服務請求時間:處理請求所需時間,需區分成功與失敗的請求。例如,HTTP 500 可能很快得到回應,而一般請求需更長時間執行流程,若合併計算,會難以分辨取得的實行時間指標是否異常。
Traffic 使用者用量:系統上使用者的需求量,需依照服務類型來定義,例如:
Errors 錯誤比率:失敗請求的比率,需區分顯式(Explicitly)與隱式(Implicitly)的錯誤,例如:
Saturation 資源飽和度:資源有多滿,資源飽和後服務效能可能會大幅降低或不可用,例如:硬碟空間、網路頻寬。
The RED Method 是 Weaveworks 所遵循的監控理念,由 Weaveworks 前工程師、現任 Grafana Labs CTO Tom Wilkie 提出,融合了 The USE Method 與 The Four Golden Signals,定義了三種指標用以監控系統中的所有微服務:
範例程式碼:07-monitoring-best-practices
啟動所有服務
docker-compose up -d
檢視服務
透過瀏覽器發送 Request
或是使用 k6 發送 Request
k6 run --vus 1 --duration 300s k6-script.js
admin/admin
關閉所有服務
docker-compose down
The USE Method 主要針對資源瓶頸與效能進行監控;The Four Golden Signals 則著重於分散式系統的關鍵指標;The RED Method 則是結合了前兩者的精髓。在面臨繁多的指標而感覺迷茫時,可以從這三大方法入手,找出最適合的策略,再依此進行擴展。
了解 Prometheus 的生成、收集、應用,以及監控的最佳實踐後,接下來我們將再度進入工具篇,介紹 Prometheus 的各種儲存方案及其他相關監控工具。